---
title: "Create a purchase using a wallet passthrough"
method: POST
path: "/purchases/ ​​"
---

# Create a purchase using a wallet passthrough

`POST /purchases/ ​​`

## Headers

- `Content-Type` string

## Request body

- object
  - `amount` integer, required — A positive integer representing how much to charge, in the smallest currency unit (eg., 100 to charge $1.00, or 100 to Charge ¥100, a zero decimal currency)
  - `reference` string, required — Reference of the transaction. Max length 255 characters.
  - `customer_ip` string, required — RFC791-compliant IP address
  - `currency` string, required — Three letter [ISO currency code](https://pmnts.readme.io/v1.0/docs/iso-currency-codes-1), in UPPERCASE
  - `card_number` string, required — Card number decrypted from apple pay wallet
  - `card_holder` string, required — Name of the card holder decrypted from wallet. If none is provided by the wallet, a sensible default should be used, such as 'Card Holder' , 'ApplePay Card Holder', 'GooglePay card holder'
  - `card_expiry` string — The card expiry decrypted from wallet - format: `MM/YYYY`
  - `wallet` object — Wallet details including type and cryptogram (CAVV)
    - `type` string, required — The type of wallet being passed through (currently support 'passthrough_apple_pay' or 'passthrough_google_pay')
    - `cryptogram` string — Required for ApplePay wallet transactions, optional for GooglePay. This is the cryptogram for the transaction.
  - `test` boolean — Indicates if this is a test transaction
  - `metadata` object
  - `addendum_data` string
  - `capture` boolean
  - `extra` object
    - `ecm` string — Specifies the transaction source and type for processing. This value is two digits, the first indicating the source (1 = Mail Order, 2 = Telephone Order, 3 = Internet) and the second indicating the payment type (1 = Single, 2 = Recurring, 3 = Instalment - not commonly supported)
    - `sli` string — The Security Level Indicator. This should match the eciIndicator value of the payment data in the decrypted payload.

## Response `200`

200

- object
  - `successful` boolean
  - `response` object
    - `authorization` string
    - `id` string
    - `card_number` string
    - `card_holder` string
    - `card_expiry` string
    - `card_token` string
    - `card_type` string
    - `card_category` string
    - `card_subcategory` string
    - `amount` integer
    - `decimal_amount` number
    - `successful` boolean
    - `message` string
    - `reference` string
    - `currency` string
    - `transaction_id` string
    - `settlement_date` string
    - `transaction_date` string
    - `response_code` string
    - `captured` boolean
    - `captured_amount` integer
    - `rrn` string
    - `cvv_match` string
    - `metadata` object
    - `addendum_data` object
  - `errors` unknown[]
    - unknown
  - `test` boolean

## Other responses

- `400` — 400

---

[API](https://skmtc.net/fatzebra/apis/gateway.md) · [All operations](https://skmtc.net/fatzebra/apis/gateway/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fatzebra/gateway/revisions/6317ad424277/schema)
